package com.tdam2013.grupo09.parsing;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStreamWriter;
import org.xmlpull.v1.XmlSerializer;
import com.tdam2013.grupo09.entidades.Mensaje;
import com.tdam2013.grupo09.entidades.UsuarioLogueado;
import android.content.Context;
import android.util.Xml;

public class ConversorXMLMensaje {

	/**
	 * @param mje
	 * @param contexto
	 * Convierte un objeto mensaje web a un archivo xml.
	 */
	public void convertirEnviarMensaje(Mensaje mje, Context contexto) {
		XmlSerializer serializador = Xml.newSerializer();
		// Crea un archivo en memoria interna
		OutputStreamWriter fout = null;
		try {
			fout = new OutputStreamWriter(contexto.openFileOutput("MensajeEnviado.xml", Context.MODE_PRIVATE));

		} 
		catch (FileNotFoundException e) {
			fout = null;			
		}

		// Asigna la salida del serializador al archivo
		try {
			serializador.setOutput(fout);
		}
		catch (IOException e) {
		}

		// Construimos el XML
		try {
			serializador.startTag("", "action");
			serializador.attribute("", "id", "REQUEST_RANDOM_VALUE");
			serializador.attribute("", "name", "send-message");
			serializador.startTag("", "action-detail");
			serializador.startTag("", "auth");
			serializador.attribute("", "username", mje.getUsuarioLogueado().getNombreUsuario());
			serializador.attribute("", "key", mje.getUsuarioLogueado().getPassword());
			serializador.endTag("", "auth");
			serializador.startTag("", "message");
			serializador.attribute("", "to", mje.getContactoWeb());
			serializador.cdsect(mje.getMensaje());
			serializador.endTag("", "message");
			serializador.endTag("", "action-detail");
			serializador.endTag("", "action");
			serializador.endDocument();
		} catch (IOException e) {
		}

		try {
			fout.close();
		} catch (IOException e) {
		}

	}

	/**
	 * @param user
	 * @param contexto
	 * Convierte un registro de usuario en un archivo xml.
	 */
	public void convertirRegistrarUsuario(UsuarioLogueado user, Context contexto) {
		XmlSerializer serializador = Xml.newSerializer();
		
		OutputStreamWriter fout = null;
		try {
			fout = new OutputStreamWriter(contexto.openFileOutput("RegistroUsuario.xml", Context.MODE_PRIVATE));
		} catch (FileNotFoundException e) {
			fout = null;			
		}
		
		try {
			serializador.setOutput(fout);
		} catch (IOException e) {
		}
		
		try {
			serializador.startTag("", "action");
			serializador.attribute("", "id", "REQUEST_RANDOM_VALUE");
			serializador.attribute("", "name", "register-user");
			serializador.startTag("", "action-detail");
			serializador.startTag("", "user");
			serializador.attribute("", "username", user.getNombreUsuario());
			serializador.attribute("", "password", user.getPassword());
			serializador.endTag("", "user");
			serializador.endTag("", "action-detail");
			serializador.endTag("", "action");
			serializador.endDocument();
		} catch (IOException e) {
		}

		try {
			fout.close();
		} catch (IOException e) {
		}

	}

	/**
	 * @param user
	 * @param fecha
	 * @param contexto
	 * Convierte la peticion para obtener mensajes en un archivo xml.
	 */
	public void convertirObtenerMensajes(UsuarioLogueado user, String fecha,Context contexto) {
		XmlSerializer serializador = Xml.newSerializer();		
		OutputStreamWriter fout = null;
		try {
			fout = new OutputStreamWriter(contexto.openFileOutput("ObtenerMensajes.xml", Context.MODE_PRIVATE));
		} 
		catch (FileNotFoundException e) {
			fout = null;			
		}
		
		try {
			serializador.setOutput(fout);
		} 
		catch (IOException e) {
		}
		
		try {
			serializador.startTag("", "action");
			serializador.attribute("", "id", "REQUEST_RANDOM_VALUE");
			serializador.attribute("", "name", "get-messages");
			serializador.startTag("", "action-detail");

			serializador.startTag("", "auth");
			serializador.attribute("", "username", user.getNombreUsuario());
			serializador.attribute("", "key", user.getPassword());
			serializador.endTag("", "auth");

			serializador.startTag("", "filter");
			serializador.attribute("", "type", "timestamp");
			serializador.text(fecha);
			serializador.endTag("", "filter");

			serializador.endTag("", "action-detail");
			serializador.endTag("", "action");
			serializador.endDocument();

		} 
		catch (IOException e) {
		}

		try {
			fout.close();
		} catch (IOException e) {
		}

	}

}
